{{ define "main" }}
{{ .Scratch.Set "scope" "single" }}

<article>
    {{ if .Params.showHero | default (.Site.Params.article.showHero | default false) }}
    {{ $heroStyle := .Params.heroStyle }}
    {{ if not $heroStyle }}{{ $heroStyle = .Site.Params.article.heroStyle }}{{ end }}
    {{ $heroStyle := print "partials/hero/" $heroStyle ".html" }}
    {{ if templates.Exists $heroStyle }}
    {{ partial $heroStyle . }}
    {{ else }}
    {{ partial "partials/hero/basic.html" . }}
    {{ end }}
    {{ end }}

    <header id="single_header" class="mt-5 max-w-prose">
        {{ if .Params.showBreadcrumbs | default (.Site.Params.article.showBreadcrumbs | default false) }}
        {{ partial "breadcrumbs.html" . }}
        {{ end }}
        <h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral" style="font-family: 华文中宋,serif">
            {{ .Title | emojify }}
        </h1>
        <div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
            {{ partial "article-meta/basic.html" (dict "context" . "scope" "single") }}
        </div>

        {{ $authorsData := .Site.Data.authors }}
        {{ $taxonomies := .Site.Taxonomies.authors }}
        {{ $baseURL := .Site.BaseURL }}
        {{ $taxonomyLink := 0 }}
        {{ $showAuthor := 0 }}

        {{ if .Params.showAuthor | default (.Site.Params.article.showAuthor | default true) }}
        {{ $showAuthor = 1 }}
        {{ partial "author.html" . }}
        {{ end }}

        {{ if not (strings.HasSuffix $baseURL "/") }}
        {{ $baseURL = delimit (slice $baseURL "/") "" }}
        {{ end }}

        {{ range $author := .Page.Params.authors }}
        {{ $authorData := index $authorsData $author }}
        {{- if $authorData -}}

        {{ range $taxonomyname, $taxonomy := $taxonomies }}
        {{ if (eq $taxonomyname $author) }}
        {{ $taxonomyLink = delimit (slice $baseURL "/authors/" $author) "" }}
        {{ end }}
        {{ end }}

        {{ partial "author-extra.html" (dict "context" . "data" $authorData "link" $taxonomyLink) }}
        {{- end -}}
        {{ end }}

        {{ if or $taxonomyLink $showAuthor }}
        <div class="mb-5"></div>
        {{ end }}

    </header>

    <section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row" style="width: 100%">

        {{ if or (and (.Params.showTableOfContents | default (.Site.Params.article.showTableOfContents | default false)) (in
        .TableOfContents "<ul")) (.Site.Params.article.showRelatedPosts | default false) }}
        <div
            class="order-first sm:max-w-prose lg:ml-auto px-0 lg:order-last lg:max-w-xs ltr:lg:pl-8 rtl:lg:pr-8">
        <div class="toc ltr:pl-5 rtl:pr-5 print:hidden lg:sticky {{ if hasPrefix .Site.Params.header.layout "fixed" -}}
        lg:top-[140px]{{ else }}lg:top-10{{ end }}">

        {{ if and (.Params.showTableOfContents | default (.Site.Params.article.showTableOfContents | default false)) (in
        .TableOfContents "<ul") }} {{ partial "toc.html" . }} {{ end }} {{ if .Site.Params.article.showRelatedPosts |
        default false }} sd {{ end }} </div>
        </div>
        {{ end }}

        <div class="min-w-0 min-h-0 max-w-fit">
            {{ partial "series.html" . }}

            <div style="width: 100%">
                {{ .Content | emojify }}
            </div>

            {{ partial "series-closed.html" . }}
            {{ partial "sharing-links.html" . }}
            {{ partial "related.html" . }}
        </div>

        <script>
            var oid = "views_{{ .File.Path }}"
            var oid_likes = "likes_{{ .File.Path }}"
        </script>
        {{ $jsPage := resources.Get "js/page.js" }}
        {{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint "sha512" }}
        <script type="text/javascript" src="{{ $jsPage.RelPermalink }}" integrity="{{ $jsPage.Data.Integrity }}"></script>

    </section>
    <footer class="pt-8 max-w-prose print:hidden">

        {{ partial "article-pagination.html" . }}
        {{ if .Params.showComments | default (.Site.Params.article.showComments | default false) }}
        {{ if templates.Exists "partials/comments.html" }}
        <div class="pt-3">
            <hr class="border-dotted border-neutral-300 dark:border-neutral-600" />
            <div class="pt-3">
                {{ partial "comments.html" . }}
            </div>
        </div>
        {{ else }}
        {{ warnf "[BLOWFISH] Comments are enabled for %s but no comments partial exists." .File.Path }}
        {{ end }}
        {{ end }}
    </footer>
</article>
{{ end }}
